package model.board;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;

public class QnaBoardDao {
	private SqlMapClient sqlMapClient;

	public QnaBoardDao() {
		super();
	}

	public QnaBoardDao(SqlMapClient sqlMapClient) {
		super();
		this.sqlMapClient = sqlMapClient;
	}

		//qna 게시판 글쓰기 , 날짜는 sysdate, bno는 시퀀스로 저장, //insert인데도 retrun이 되나보네.. resultClass도 없어..
		public int writeqna(QnaBoardVO vo) throws SQLException{
			return (Integer) sqlMapClient.insert("qnaBoard.writeqna",vo);
		}
		//시퀀스 번호로 아직 저장되지 않은 bvo의 date를 받아온다.
		public String selectByNoForDate(int no) throws SQLException{
			return (String)sqlMapClient.queryForObject("qnaBoard.selectByNoForDate",no);
		}
		//전체글을 pageNo와 CommonConstance를 통해서 List로 반환한다.
		public List<QnaBoardVO> getContentList(HashMap map) throws SQLException {
			return sqlMapClient.queryForList("qnaBoard.getContentList", map);
		}
		//총 콘텐츠 수 구하기
		public int totalContent() throws SQLException {
			return  (Integer)sqlMapClient.queryForObject("qnaBoard.totalContent");
		}
		//게시글번호(시퀀스번호)로 상세보기
		public QnaBoardVO showContent(int bno) throws SQLException{
			return (QnaBoardVO)sqlMapClient.queryForObject("qnaBoard.showContent",bno);
		}
		//게시글번호(시퀀스번호)로 count update
		public void updateCount(int bno) throws SQLException{
			sqlMapClient.update("qnaBoard.updateCount", bno);
		}
		//게시글을 해당 시퀀스로 삭제
		public void deleteContent(int bno) throws SQLException {
			sqlMapClient.delete("qnaBoard.deleteContent",bno);
		}
		//게시글 업데이트
		public void updateContent(QnaBoardVO bvo) throws SQLException {
			sqlMapClient.update("qnaBoard.updateContent",bvo);
		}
		//qna게시판에서 검색시
		public List searchQna(HashMap map) throws SQLException {
			System.out.println("Dao searchQna map:"+map);
			return sqlMapClient.queryForList("qnaBoard.searchQna",map);
		}
		//검색시 조건에 맞는 회원들의 수를 구하기
		public int totalContentBySearch(QnaBoardVO vo) throws SQLException{
			return (Integer) sqlMapClient.queryForObject("qnaBoard.totalContentBySearch",vo);
		}
		//updateRestep,insertRefContent
		public void updateRestep(int ref, int restep) throws SQLException{
			System.out.println("dao updateRestep ref:"+ref+" restep:"+restep);
			HashMap map = new HashMap();
			map.put("b_ref", ref);
			map.put("b_restep", restep);
			System.out.println("dao updateRestep map:"+map);
			sqlMapClient.update("qnaBoard.updateRestep", map);
		}
		//qna답글 작성후 저장
		public int insertRefContent(QnaBoardVO bvo) throws SQLException{
			System.out.println("33333333333333333dao insertRefContent bvo:"+bvo);
			int num=(Integer) sqlMapClient.insert("qnaBoard.writeRef", bvo);
			System.out.println("dao insertRefContent"+num);
			return num;
		}
		//리플작성후 저장
		public int insertReply(BoardReplyVO brvo) throws SQLException{
			return (Integer) sqlMapClient.insert("qnaBoard.insertReply",brvo);
		}
		//qna리플작성후 sysdate를 채워줌
		public String insertReplyDate(int no) throws SQLException{
			return (String) sqlMapClient.queryForObject("qnaBoard.insertReplyDate",no);
		}
		//전체 리플을 보여줄때
		public List selectAllReply(int no) throws SQLException{
			return sqlMapClient.queryForList("qnaBoard.selectAllReply",no);
		}
		//리플삭제 할때 사용
		public void delReply(String boardNo) throws SQLException{
			sqlMapClient.delete("qnaBoard.delReply",boardNo);
		}

		public void updateReplyCount(int b_no) throws SQLException {
			sqlMapClient.update("qnaBoard.updateReplyCount", b_no);
		}

		public void deleteReplyCount(int b_no) throws SQLException {
			sqlMapClient.update("qnaBoard.deleteReplyCount", b_no);
		}
		public void deleteRef(int bno) throws SQLException{
			sqlMapClient.delete("qnaBoard.deleteRef",bno);
		}
}










